﻿#define _CRT_SECURE_NO_WARNINGS 1
//C++入门
//C++的第⼀个程序
//#include<iostream>
//using namespace std;
//
//int main()
//{
//	cout << "hello C++" << endl;
//
//	return 0;
//}

//命名空间
//#include <stdio.h>
//#include <stdlib.h>
//
////命名空间的访问规则: 
////1.没有指定命名空间就先去局部找，没有就去全局找，再没有就报错
////2.指定了命名空间就去命名空间里找， 找不到就报错
//namespace xhy
//{
//	int rand = 10;
//}
//
//int main()
//{
//	//在没有包含<stdlib.h>这个头文件的时候rand是可以正常用的
//	//但包含了<stdlib.h>这个头文件的时候就会报错，原因是stdlib.h这个头文件里有一个rand的函数，
//	// 与定义的rand全局变量的命名冲突了，所以报错
//	//C++为了解决C语言的这个缺陷所以有了命名空间
//	printf("%p\n", rand);//这时候打印的是库里面rand函数的地址
//	//printf("%d\n", ::rand);// ::是域作用范访问限定符,::前面什么都不写就是访问全局的域
//	printf("%d\n", xhy::rand);//指定去xhy这个命名空间里找rand这个全局变量
//
//	return 0;
//}

//命名空间可以嵌套
//#include<stdio.h>
//#include<stdlib.h>
//
//namespace xhy
//{
//	namespace sand1
//	{
//		int sand = 10;
//	}
//
//	namespace sand2
//	{
//		int sand = 20;
//	}
//}
//
//int main()
//{
//	printf("%d %d\n", xhy::sand1::sand, xhy::sand2::sand);
//
//	return 0;
//}

//命名空间的全部展开
//#include<iostream>
////将std这个命名空间的内容全部展开，但不是头文件那样展开
////只是改为了，会去这个命名空间里找
////using namespace std;
//
////指定展开部分内容
//using std::cout;
//using std::endl;
//
//int main()
//{
//	//std的命名空间全部展开后，可以直接使用里面的对象
//	// 日常练习可以这样做，但项目里不能这样做
//	//cout << "hello" << endl; 
//
//	//指定命名空间展开
//	//std::cout << "world" << std::endl;
//
//	cout << "hehe" << endl;//指定展开部分内容后可以直接使用展开的内容
//
//
//	return 0;
//}

//C++输⼊&输出
//#include <iostream>
//using std::cout;
//using std::endl;
//
//int main()
//{
//	//cout是输出流， <<称为流插入
//	//cout会自动识别类型
//	std::cout << "hello" << std::endl;
//
//	int i = 0;
//	double d = 0.0;
//	//cin是输入流，>>称为流提取
//	std::cin >> i >> d;
//	cout << i << endl << d << endl;
//
//	return 0;
//}

//缺省参数
#include<iostream>
using namespace std;

void test1(int a = 0)
{
	cout << a << endl;
}

//全缺省
void test2(int a = 10, int b = 20, int c = 30)
{
	cout << a << " " << b << " " << c << endl;
}

int main()
{
	test1();
	test1(1);

	test2();
	test2(1);
	test2(1,2);
	test2(1,2,3);
	
	//test2(,2,3);//err缺省参数的传入只能从左往右传这是语法规定

	return 0;
}